Apache Commons Collections লাইব্রেরি Predicated Collection তৈরি করার জন্য একটি শক্তিশালী ইউটিলিটি সরবরাহ করে, যা predicate-based filtering প্রক্রিয়া ব্যবহার করে। Predicate হল একটি শর্ত যা true অথবা false রিটার্ন করে এবং Predicated Collection হলো একটি কালেকশন যা শুধুমাত্র সেই উপাদানগুলো ধারণ করে যা predicate শর্ত পূর্ণ করে।
এটি Collections-এ উপাদানগুলোর উপর filtering করতে সাহায্য করে, যা সাধারণভাবে validation বা condition-based inclusion হিসাবে ব্যবহৃত হয়।
Predicate একটি ফাংশনাল কনসেপ্ট যা একটি ইনপুট নেয় এবং boolean রিটার্ন করে, যা সাধারণত কোনো শর্ত পরীক্ষা করার জন্য ব্যবহৃত হয়। যেমন, একটি মান পরীক্ষা করা যে তা নির্দিষ্ট একটি সীমার মধ্যে আছে কিনা অথবা কোনো অবস্থা পূর্ণ করছে কিনা।
এটি Apache Commons Collections এ Predicate
ইন্টারফেস হিসেবে বাস্তবায়িত, এবং এখানে বিভিন্ন predicate তৈরি করা এবং কালেকশনগুলিতে predicate-based filtering প্রয়োগ করা যায়।
Predicated Collection হল এমন একটি Collection (যেমন List, Set ইত্যাদি) যা predicate এর মাধ্যমে ফিল্টার করা হয়। এটি একটি Predicate ফাংশন ব্যবহার করে উপাদানগুলোকে যাচাই করে, এবং শুধুমাত্র সেই উপাদানগুলো সংগ্রহে থাকে যা শর্ত পূর্ণ করে।
Apache Commons Collections লাইব্রেরিতে PredicatedCollection
ক্লাসটি ব্যবহৃত হয় predicate তৈরি করে এবং নির্দিষ্ট শর্ত অনুযায়ী কালেকশনের উপাদান ফিল্টার করার জন্য।
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.collection.PredicatedCollection;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// একটি List তৈরি করা
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("orange");
// Predicate তৈরি করা (যেখানে উপাদানটি 'a' দিয়ে শুরু হতে হবে)
Predicate<String> startsWithAPredicate = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.startsWith("a");
}
};
// PredicatedCollection তৈরি করা
PredicatedCollection<String> predicatedCollection = new PredicatedCollection<>(list, startsWithAPredicate);
// PredicatedCollection এর উপাদান ফিল্টার করা
System.out.println("Filtered Collection: " + predicatedCollection);
}
}
আউটপুট:
Filtered Collection: [apple]
এখানে:
"a"
দিয়ে শুরু হয় কি না।PredicatedCollection
তৈরি করে list এর উপাদানগুলির মধ্যে শুধুমাত্র সেই উপাদানটি রাখা হয়েছে যেটি startsWith("a")
শর্ত পূর্ণ করে।"apple"
মাত্ৰ একটি উপাদান হিসেবে রয়ে গেছে, কারণ তা "a"
দিয়ে শুরু হয়।আপনি একাধিক predicate শর্ত ব্যবহার করে Predicated Collection তৈরি করতে পারেন। এই ক্ষেত্রে, আপনি একটি and বা or শর্তে predicates যোগ করতে পারেন।
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.collection.PredicatedCollection;
import org.apache.commons.collections4.functors.AllPredicate;
import org.apache.commons.collections4.functors.NotPredicate;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// একটি List তৈরি করা
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("orange");
// Predicate তৈরি করা (যেখানে উপাদানটি 'a' দিয়ে শুরু হতে হবে এবং 5 অক্ষরের কম হবে)
Predicate<String> startsWithAPredicate = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.startsWith("a");
}
};
Predicate<String> lengthPredicate = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.length() < 6;
}
};
// Multiple predicates কে AllPredicate তে সংযুক্ত করা
Predicate<String> combinedPredicate = new AllPredicate<>(startsWithAPredicate, lengthPredicate);
// PredicatedCollection তৈরি করা
PredicatedCollection<String> predicatedCollection = new PredicatedCollection<>(list, combinedPredicate);
// PredicatedCollection এর উপাদান ফিল্টার করা
System.out.println("Filtered Collection: " + predicatedCollection);
}
}
আউটপুট:
Filtered Collection: [apple]
এখানে:
"a"
দিয়ে শুরু হচ্ছে কি না।AllPredicate
ব্যবহার করে দুটি predicate একসাথে and শর্তে সংযুক্ত করেছি। এর ফলে শুধুমাত্র "apple"
উপাদানটি শর্ত পূর্ণ করেছে, কারণ এটি "a"
দিয়ে শুরু হয় এবং এর দৈর্ঘ্য ৫ অক্ষরের কম।Apache Commons Collections লাইব্রেরিতে CollectionUtils ক্লাস রয়েছে, যা কিছু সাহায্যকারী মেথড সরবরাহ করে, যার মধ্যে predicatedCollection একটি গুরুত্বপূর্ণ মেথড।
CollectionUtils.filter
ব্যবহার করে Predicated Collection তৈরিimport org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// একটি List তৈরি করা
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("orange");
// Predicate তৈরি করা (যেখানে উপাদানটি 'b' দিয়ে শুরু হতে হবে)
Predicate<String> startsWithB = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.startsWith("b");
}
};
// CollectionUtils.filter ব্যবহার করে Predicated Collection তৈরি
CollectionUtils.filter(list, startsWithB);
// Filtered collection দেখানো
System.out.println("Filtered Collection: " + list);
}
}
আউটপুট:
Filtered Collection: [banana]
এখানে:
CollectionUtils.filter
ফাংশনটি ব্যবহার করে, আমরা list এ শুধুমাত্র সেই উপাদান রাখার জন্য predicate প্রয়োগ করেছি যা "b"
দিয়ে শুরু হয়।"banana"
উপাদানটি রয়ে গেছে এবং বাকি উপাদানগুলি বাদ পড়ে গেছে।Apache Commons Collections এর Predicated Collection ফিচারটি Java প্রোগ্রামিংয়ে কার্যকরভাবে ব্যবহৃত হতে পারে যখন আপনাকে ডেটা সিলেকশন বা ফিল্টারিং করতে হয়।
common.read_more